package d1_char_stream;

import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class FileReaderDemo02 {
    public static void main(String[] args) {

        //(很多老项目里面还是或用这个代码的)
        //目标: 文件字符输入流的使用: 每次读取多个字符
        //1、創建一个文件字符输入流的管道与源文件接通
        try (   //这里一旦出现异常 ---> 可能下面无法捕获上面的异常, 除非多态捕获, 将资源放到这里面,异常就会编程IOException
                //特点: 这里能释放资源, 并且执行完毕之后,会自动调用它们的close方法关闭
                Reader fr = new FileReader("javapromax\\day10-io-code\\src\\陈某02.txt");//一定要写多态
        ) {
            //2、创建一个字符数组 , 为什么要创建字符数据, 因为是一字符为最小单位进行读取
            char[] buffer = new char[3];//3个3个来

           /* //进行读取
            int read = fr.read(buffer);//这个重载方法是截断
            //进行输出
            System.out.println(Arrays.toString(buffer));*/

            //3、利用循环进行改进
            int len; //记住读取到的编号 当没有读到的时候就是-1
            while ((len = fr.read(buffer)) > 0) {
                //利用String提供的构造器进行解码
                //                                  从0开始 读多少倒多少
                String info = new String(buffer, 0, len);
                System.out.print(info);//输出
            }

            //拓展
            //      可以避免中文乱码? 可以
            //      性能怎么样? 还可以
            //      这是截至此刻学过的读取文本内容最好的方案

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
